package co.com.claro.servicio.negocio;

import co.com.claro.servicio.io.CatalogoIo;
import co.com.claro.servicio.io.LoginIo;
import co.com.claro.servicio.od.*;
import org.apache.log4j.Logger;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.ResourceBundle;

/**
 * Created by IntelliJ IDEA.
 * User: Manuel Serrano
 * Date: 20/05/2010
 * Time: 02:52:00 PM
 * To change this template use File | Settings | File Templates.
 */
public class CatalogoServicio implements ICatalogoServicio,Serializable {
    private static final Logger logger = Logger.getLogger(CatalogoServicio.class);

    /** El Data Access Object
     */
    private CatalogoIo catalogoIo;

    /** Constructor de la clase
     */
    public CatalogoServicio(){
    }

    public List<OrdenOd> obtenerCatalogosEnFlujo (String transaccionId, OrdenOd o) throws Exception {
        final String origen = "CatalogoServicio.obtenerCatalogosEnFlujo";

        long time;
        List<OrdenOd> ordenes = null;

        try {

            logger.info(ResourceBundle.getBundle("mensajeslogs").getString("mensaje.inicio.ser")+CatalogoServicio.class+" | "+origen);

            time = System.currentTimeMillis ();

            ordenes=new ArrayList<OrdenOd>();
            ordenes = getCatalogoIo().obtenerCatalogosEnFlujo(transaccionId, o);

            time = System.currentTimeMillis () - time;

            logger.info(ResourceBundle.getBundle("mensajeslogs").getString("mensaje.exitos.ser")+CatalogoServicio.class+" | "+origen);
        }
        catch (Exception ex) {
            logger.error(ex);
        }

        return (ordenes);
    }

    public List<ServidorOd> obtenerDetalleServidor (String transaccionId, OrdenDetalleOd oDet) throws Exception {
        final String origen = "CatalogoServicio.obtenerDetalleServidor";

        long time;
        List<ServidorOd> servidores = null;

        try {

            logger.info(ResourceBundle.getBundle("mensajeslogs").getString("mensaje.inicio.ser")+CatalogoServicio.class+" | "+origen);

            time = System.currentTimeMillis ();

            servidores =new ArrayList<ServidorOd>();
            servidores = getCatalogoIo().obtenerDetalleServidor(transaccionId, oDet);

            time = System.currentTimeMillis () - time;

            logger.info(ResourceBundle.getBundle("mensajeslogs").getString("mensaje.exitos.ser")+CatalogoServicio.class+" | "+origen);
        }
        catch (Exception ex) {
            logger.error(ex);
        }

        return (servidores);
    }

    public List<BaseDatosOd> obtenerDetalleBaseDatos (String transaccionId, OrdenDetalleOd oDet) throws Exception {
        final String origen = "CatalogoServicio.obtenerDetalleBaseDatos";

        long time;
        List<BaseDatosOd> basesdatos= null;

        try {

            logger.info(ResourceBundle.getBundle("mensajeslogs").getString("mensaje.inicio.ser")+CatalogoServicio.class+" | "+origen);

            time = System.currentTimeMillis ();

            basesdatos =new ArrayList<BaseDatosOd>();
            basesdatos = getCatalogoIo().obtenerDetalleBaseDatos(transaccionId, oDet);

            time = System.currentTimeMillis () - time;

            logger.info(ResourceBundle.getBundle("mensajeslogs").getString("mensaje.exitos.ser")+CatalogoServicio.class+" | "+origen);
        }
        catch (Exception ex) {
            logger.error(ex);
        }

        return (basesdatos);
    }

    public List<MovimientoOd> obtenerMovimientos (String transaccionId, OrdenOd o) throws Exception {
        final String origen = "CatalogoServicio.obtenerMovimientos";

        long time;
        List<MovimientoOd> movimientos = null;

        try {

            logger.info(ResourceBundle.getBundle("mensajeslogs").getString("mensaje.inicio.ser")+CatalogoServicio.class+" | "+origen);

            time = System.currentTimeMillis ();

            movimientos = new ArrayList<MovimientoOd>();
            movimientos = getCatalogoIo().obtenerMovimientos(transaccionId, o);

            time = System.currentTimeMillis () - time;

            logger.info(ResourceBundle.getBundle("mensajeslogs").getString("mensaje.exitos.ser")+CatalogoServicio.class+" | "+origen);
        }
        catch (Exception ex) {
            logger.error(ex);
        }

        return (movimientos);
    }

    public boolean actualizarEstado (String transaccionId, OrdenOd o) throws Exception {
        final String origen = "CatalogoServicio.actualizarEstado";
        boolean resultado = false;
        long time;

        try {

            logger.info(ResourceBundle.getBundle("mensajeslogs").getString("mensaje.inicio.ser")+CatalogoServicio.class+" | "+origen);

            time = System.currentTimeMillis ();

            resultado = getCatalogoIo().actualizarEstado(transaccionId, o);

            time = System.currentTimeMillis () - time;

            logger.info(ResourceBundle.getBundle("mensajeslogs").getString("mensaje.exitos.ser")+CatalogoServicio.class+" | "+origen);
        }
        catch (Exception ex) {
            logger.error(ex);
        }

        return (resultado);
    }

    public CatalogoIo getCatalogoIo() {
        return catalogoIo;
    }

    public void setCatalogoIo(CatalogoIo catalogoIo) {
        this.catalogoIo = catalogoIo;
    }
}
